package bean;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import bean.vo.ItemSolicitudCotizacionVO;

@Entity 
@Table( name = "items_solicitud_cotizacion" )
public class ItemSolicitudCotizacion extends EntidadPersistente{
	private String codigo;
	private String sufijo;
	private String paisOrigen;
	private Integer cantidad;
	private String fabricante;
	@ManyToOne
	private SolicitudCotizacion solicitud;
	
	public ItemSolicitudCotizacion () {}
	
	public ItemSolicitudCotizacion (SolicitudCotizacion solicitud, String codigo, String sufijo, String paisOrigen, 
			String fabricante, Integer cantidad){
		this.solicitud = solicitud;
		this.codigo = codigo;
		this.sufijo = sufijo;
		this.paisOrigen = paisOrigen;
		this.cantidad = cantidad;
		this.fabricante = fabricante;
	}
	
	public ItemSolicitudCotizacionVO getVO() {
		ItemSolicitudCotizacionVO vo = new ItemSolicitudCotizacionVO();
		vo.setCantidad(cantidad);
		vo.setCodigo(codigo);
		vo.setFabricante(fabricante);
		vo.setPaisOrigen(paisOrigen);
		vo.setSufijo(sufijo);
		
		return null;
	}
	
	public String getCodigo() {
		return codigo;
	}
	
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	
	public String getSufijo() {
		return sufijo;
	}
	
	public void setSufijo(String sufijo) {
		this.sufijo = sufijo;
	}
	
	public Integer getCantidad() {
		return cantidad;
	}
	
	public void setCantidad(Integer cantidad) {
		this.cantidad = cantidad;
	}
	
	public String getFabricante() {
		return fabricante;
	}
	
	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}

	public String getPaisOrigen() {
		return paisOrigen;
	}

	public void setPaisOrigen(String paisOrigen) {
		this.paisOrigen = paisOrigen;
	}

	public SolicitudCotizacion getSolicitud() {
		return solicitud;
	}

	public void setSolicitud(SolicitudCotizacion solicitud) {
		this.solicitud = solicitud;
	}
	
	@Override
	public int hashCode() {
		final int primo = 31;
		int result = 1;
		result = primo * (result + (codigo == null ? 0 : codigo.hashCode()) + 
				(sufijo == null ? 0 : sufijo.hashCode()) + (paisOrigen == null ? 0 : paisOrigen.hashCode()) +
				(cantidad == null ? 0 : cantidad.hashCode()) + (fabricante == null ? 0 : fabricante.hashCode()));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) return true;	
		if ((obj == null) || (!(obj instanceof ItemSolicitudCotizacion))) {
			return false;
		}
		
		ItemSolicitudCotizacion otro = (ItemSolicitudCotizacion) obj;
		
		boolean mismoCodigo = (codigo!=null && otro.codigo != null ? (codigo.equals(otro.codigo)) : false);
		boolean mismoSufijo = (sufijo!=null && otro.sufijo != null ? (sufijo.equals(otro.sufijo)) : (sufijo==null && otro.sufijo == null));
		boolean mismoOrigen = (paisOrigen!=null && otro.paisOrigen != null ? (paisOrigen.equals(otro.paisOrigen)) : false);
		boolean mismoFabricante = (fabricante!=null && otro.fabricante != null ? (fabricante.equals(otro.fabricante)) : false);
		boolean mismaSolicitud = (solicitud!=null && otro.solicitud != null ? (solicitud.equals(otro.solicitud)) : false);
		
		return mismoCodigo && mismoOrigen && mismoFabricante && mismaSolicitud && mismoSufijo;
	}
}
